// 问题：在主程序中，包含循环、定时器、promise，循环中包含promise，定时器中包含promise
// 则该程序的执行逻辑是什么样的？
// 相关背景：探讨将埋点逻辑封装在promise中，防止埋点逻辑出错或者接口异常，影响主逻辑的执行
const newPromise = info => {
  return Promise.resolve().then(() => {
    // console.log(k) // 这里的报错不会影响主任务逻辑的执行
    // setTimeout(() => { // 这里如果又包含setTime'out宏任务会怎么样呢
    //   console.log(`消息${info}`)
    // }, 1000)
  }).catch(err => {
    console.log(`子任务promise出错了${err}`)
  })
}

const trackEvent = info => {
  console.log(`触发事件${info}`)
  newPromise(info)
}
for(let i = 1; i < 6; i++) {
  trackEvent(i)
}
console.log('主程序执行')
setTimeout(() => {
  console.log('setTimeout内部')
Promise.resolve().then(() => console.log('setTimeout中的promise'))
}, 2000)
Promise.resolve().then(() => console.log('主程序中的promise'))